package TUILayer;//makes this class a part of the TUILayer package
import java.util.Scanner;
import java.util.ArrayList;
import ControlLayer.*;//The TUILayer needs to know the ControlLayer

/**
 * 
 * 
 * @author (Brian, Jesper, Jesper, Hoang) 
 * @version ()
 */
public class LagerUI
{   
    //Instance variabler
    private LagerCtr lagerCtr;
    
    //Constructor
    public LagerUI()
    {
        lagerCtr = new LagerCtr();      
    }
    
    //Metode til at starte lager menuen
    public void start()
    {   
        lagerMenu();
    }
    
    //Metode til at håndtere lager menuen
    public void lagerMenu()
    {
       boolean exit = false;
       while(!exit)
       {
          int choise = skrivLagerMenu(); 
          if(choise == 1)
          {   
              vareInfo();
          }
          else
          {
              if(choise == 2)
              {
                   
                    opretVare();
              }  
              else
              {
                  if(choise == 3)
                  {
                     
                      sletVare();
                  }  
                  else{
                      if(choise == 4)
                      {
                      
                          opdaterVare();
                      }
                      else
                      {
                          if(choise == 5)
                          {
                            
                              bestilVare();
                          }
                          else
                          {
                            if(choise == 6)
                            {
                                visAlleVare();
                            }
                            else
                            {
                                if(choise == 7)
                                {
                                    exit = true;
                                }
                                else
                                {
                                    System.out.println("Forkert input. Prøv igen!");
                                    pause();
                                }
                            }
                           }//end else
                        }//end else
                    }//end else
                }//end else
            }//end else
            
       }//end while
    }
    
    //Metode til at udskrive lager menuen
    public int skrivLagerMenu()
    {     
            Scanner keyboard = new Scanner(System.in);
            System.out.println("\f *** Kunde Menu ***");
            System.out.println(" (1) Vis Vare Info");
            System.out.println(" (2) Opret Vare");
            System.out.println(" (3) Slet Vare");
            System.out.println(" (4) Opdater Vare");
            System.out.println(" (5) Bestil Vare");
            System.out.println(" (6) Vis Alle Vare");
            System.out.println(" (7) Tilbage");
            System.out.print("\n Indtast valg: ");
            
            int choise = keyboard.nextInt();
            return choise;
    }
    
    //Metode til at læse id input
    public int inputId()
    {   
        boolean ok = false;
        int id = 0;
        while(!ok)
        {

           Scanner keyboard = new Scanner(System.in);
           System.out.println(" Skriv Id:  ");
           try{
             id = keyboard.nextInt();
             ok = true;
           }
           catch (Exception e)
            {
             System.out.println("Der skal indtastes et tal -  prøv igen");
             int input = keyboard.nextInt();
           }
        }//end while
        return id;
    }
    
    //Metode til at læse navn input
    public String inputNavn()
    {

         Scanner keyboard = new Scanner(System.in);  
         System.out.println(" Indtast Navn:  ");
         String vareNavn = keyboard.nextLine();
         return vareNavn;
    }
    
    //Metode til at læse pris input
    public double inputPris()
    {

         Scanner keyboard = new Scanner(System.in);  
         System.out.println(" Indtast Pris:  ");
         double varePris = keyboard.nextDouble();
         return varePris;
    }
    
    //Metode til at læse antal input
    public int inputAntal()
    {

         Scanner keyboard = new Scanner(System.in);  
         System.out.println(" Indtast Antal:  ");
         int vareAntal = keyboard.nextInt();
         return vareAntal;
    }
    
    //Metode til at læse statistik input
    public double inputStatistik()
    {
         Scanner keyboard = new Scanner(System.in);  
         System.out.println(" Indtast omsætning af vare:  ");
         Double vareStatistik = keyboard.nextDouble();
         return vareStatistik;
    }

    //Metode til at læse bestillingsantals input
    public int inputBestillingsAntal()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println(" Indtats antallet af vare der ønskes bestilt:  ");
        int antal = keyboard.nextInt();
        return antal;
    }
    
    //Metode til at udskrive vare info
    private void vareInfo()
    {
        int _id = inputId();
        
        String info = lagerCtr.getVareInfo(_id);
        
        System.out.println(info);
        
        pause();
    }
    
    //Metode til at oprette vare
    private void opretVare()
    {
        System.out.println();
        System.out.println(" Opret ny Vare:");
        
        
        int _id = inputId();
        String _vareNavn = inputNavn();
        double _pris = inputPris();
        int _antal = inputAntal();
        double _statistik = inputStatistik();
        
        lagerCtr.opretVare(_id, _vareNavn, _pris, _antal, _statistik);
        
        System.out.println();
        System.out.println(" " + _vareNavn + " er blevet oprettet!");
        
        pause();
    }
    
        private void sletVare()
    {
        int _id = inputId();
        
        if(lagerCtr.deleteVare(_id))
        {
            System.out.println(" Vare " + _id + " er blevet slettet!");
        }
        else
        {
            System.out.println(" Vare " + _id + " findes ikke. Prøv igen!");
        }
        
        pause();
    }
        
    //Metode til at opdatere vare
    private void opdaterVare()
    {
        int _id = inputId();
        String _vareNavn = inputNavn();
        double _pris = inputPris();
        int _antal = lagerCtr.vareAntal(_id);
        double _statistik = lagerCtr.vareStatistik(_id);
        
        boolean success = lagerCtr.opdaterVare(_id, _vareNavn, _pris, _antal, _statistik);
        
        if(success)
        {
            System.out.println();
            System.out.println(" " + _vareNavn + " er blevet opdateret!");
        }
        else
        {
            System.out.println();
            System.out.println(" " + _vareNavn + " kunne ikke opdateres! Prøv igen!");
        }
        
        pause();
    }
    
    //Metode til at bestille en vare
    private void bestilVare()
    {
        int _id = inputId();
        String _vareNavn = lagerCtr.vareNavn(_id);
        double _varePris = lagerCtr.varePris(_id);
        int _antal = lagerCtr.vareAntal(_id);
        double _statistik = lagerCtr.vareStatistik(_id);
        
        System.out.println();
        System.out.println(" Antal vare på lager: " + _antal + ".");
        
        int _bestillingsAntal = inputBestillingsAntal();
        int _newAntal = lagerCtr.nyVareBeholding(_id, _bestillingsAntal);
        
        boolean success = lagerCtr.opdaterVare(_id, _vareNavn , _varePris, _newAntal, _statistik);
        
        if(success)
        {
            System.out.println();
            System.out.println(" Varebeholdningen for " + _vareNavn + " er nu " + _newAntal + ".");
        }
        else
        {
            System.out.println();
            System.out.println(" Varebeholdningen for " + _vareNavn + " blev IKKE opdateret. Prøv igen!");
        }
        pause();
    }
    
    //Metode til at vise alle vare
    private void visAlleVare()
    {
        System.out.println(lagerCtr.getAlleVare()); 
        
        pause();
    }
    
    //Metode til at pause lager menuen
    private void pause()
    {
        Scanner keyboard = new Scanner(System.in);
        String vent = keyboard.nextLine();
    }
}
   